/* 
 * File:   ClientConfFileManager.h
 * Author: nahuel
 *
 * Created on May 18, 2013, 5:51 PM
 */

#ifndef CLIENTCONFFILEMANAGER_H
#define	CLIENTCONFFILEMANAGER_H

#include <string>
#include "common_tinyxml.h"

namespace TP {

class ClientConfFileManager {
    private:
        /*
         * Nombre de nodos
         */
        static std::string generalNodeName;
        static std::string pathAuNodeName;
        static std::string intervaloPollingNodeName;
        
        static std::string conexionNodeName;
        static std::string ipServidorNodeName;
        static std::string puertoServidorNodeName;
        static std::string usuarioNodeName;
        static std::string passwordNodeName;
            
        
        TiXmlDocument* _confFile;
        std::string _filePath;
        
        /*
         *  Crea el archivo de configuracion. Se utiliza cuando no se encuentra
         *  el archivo solicitado.
         */
        void _CrearArchivo();
        
    public:
        /*
         * Si no existe lo crea.
         */
        ClientConfFileManager(const std::string& filePath);
        
        std::string GetPathAU();
        unsigned int GetIntervaloPolling();
        std::string GetIpServidor();
        std::string GetPuertoServidor();
        std::string GetUsuario();
        std::string GetPassword();
        
        void SetPathAU(const std::string& pathAu);
        void SetIntervaloPolling(unsigned int intervaloPolling);
        void SetIpServidor(const std::string& ipServidor);
        void SetPuertoServidor(const std::string &puertoServidor);
        void SetUsuario(const std::string& usuario);
        void SetPassword(const std::string& password);
        
        void SaveChanges();
        
        virtual ~ClientConfFileManager();
};

}

#endif	/* CLIENTCONFFILEMANAGER_H */

